# 第一阶段
FROM golang:1.16 AS my_build_stage
WORKDIR /usr/src/app/dump
COPY . .
# 替换国内源，下载快
RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \
&& apt-get clean \
&& apt-get update
RUN apt-get install libpcap-dev -y
RUN go build -v -mod=vendor -o dump
# 第二阶段, 需要使用libpcap-dev通过的pcap处理功能
#FROM busybox:glibc // 可以压缩最终镜像体积，但是拉取不到libpcap就不使用此第二阶段了
#WORKDIR /apps
#COPY --from=my_build_stage /usr/src/app/dump/dump .
RUN chmod +x dump
EXPOSE 80
CMD ["./dump", "-b=true"]

# 使用步骤：
# docker build -t dump .  // 构建镜像
# docker run -p 80:80 --name dump -i dump // 后台运行, 加 -d
# 执行处理文件 假设pcap文件为dump.pcap, 则执行如下命令，即可获取到处理的文件dump_pcap_deal.txt
# 方式一：pcapName=dump.pcap;savePcapName=dump_pcap.txt; docker cp $pcapName dump:/usr/src/app/dump/ && docker exec -it dump ./dump -pcap-path=$pcapName -p=true >> $savePcapName
# 方式二：pcapName=dump.pcap; docker cp $pcapName dump:/usr/src/app/dump/ && docker exec -it dump ./dump -pcap-path=$pcapName
#        docker cp dump:/usr/src/app/dump/dump_pcap_deal.pcap ./
# 方式三：pcapName=dump.pcap; docker cp $pcapName dump:/usr/src/app/dump/ && savePcapName=$(docker exec -it dump ./dump -pcap-path=$pcapName); echo $savePcapName && docker cp dump:/usr/src/app/dump/$savePcapName ./

